タグクラウドポートレットの作成
==========================

[タグクラウド](http://en.wikipedia.org/wiki/Tag_cloud) は、各タグの人気の高さを示唆する視覚効果とともに、記事のタグの一覧を表示するものです。


`TagCloud`クラスの作成
-------------------------

`TagCloud` クラスを `/wwwroot/blog/protected/components/TagCloud.php` ファイルとして
作成します。このファイルは以下のとおりです。

~~~
[php]
Yii::import('zii.widgets.CPortlet');

class TagCloud extends CPortlet
{
	public $title='Tags';
	public $maxTags=20;

	protected function renderContent()
	{
		$tags=Tag::model()->findTagWeights($this->maxTags);

		foreach($tags as $tag=>$weight)
		{
			$link=CHtml::link(CHtml::encode($tag), array('post/index','tag'=>$tag));
			echo CHtml::tag('span', array(
				'class'=>'tag',
				'style'=>"font-size:{$weight}pt",
			), $link)."\n";
		}
	}
}
~~~

`UserMenu` ポートレットと異り、`TagCloud` ポートレットはビューを使用しません。
その代わり、その表現は `renderContent()` メソッドで行われます。
これは表現が、あまり多くの HTML タグを含まないためです。

それぞれのタグは、記事のインデクスページへのハイパーリンク (対応するタグをパラメータとして持ちます) として表示されます。
各タグのリンクのフォントサイズは、他のタグとの相対的な重みにより調整されます。
もしあるタグがより頻繁に記事に表れるなら、そのフォントサイズはより大きくなります。

`TagCloud` ポートレットの使用
-------------------------


`TagCloud` ポートレットの使用はとても単純です。
レイアウトファイル `/wwwroot/blog/protected/views/layouts/column2.php` を以下のように修正します。

~~~
[php]
......
<div id="sidebar">

	<?php if(!Yii::app()->user->isGuest) $this->widget('UserMenu'); ?>

	<?php $this->widget('TagCloud', array(
		'maxTags'=>Yii::app()->params['tagCloudCount'],
	)); ?>

</div>
......
~~~

<div class="revision">$Id$</div>
